<?php

namespace App\Http\Controllers;

use App\Blog;
use Illuminate\Http\Request;
use Auth;
class BlogController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
//        echo "index";
//        在这里做模型关联的测试
//        首先测试模型属性测试
//        找到博客表id为11的对应的用户的数据，获得数据不加括号，设置数据就加括号

//        找到blog表中id为1的那个字段，然后找到对应的用户
//        $res = Blog::find(1);
//        dd($res);
//        dd($res->user->toArray());
//        模型关联，先找到一张表对应的字段，再更据字段找到另一张表的数据，就像写sql语句那样
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
//        echo 111;
//        $post = $request->all();
//        $post["uid"] = Auth::user()->id;
//        Blog::create($post);

//        以上是第一种方法往数据表里写东西，下面我们使用模型关联的方法王进写数据

//        第二种方法：两表关联，blog表和user表关联
//        先判断user表和blog表的关系，博客表对用户表来说是多对一的关系
//        用户表对博客表的关系是一对多的关系


//        先获得到你的post表单里的值
        $post = $request->all();

//        好了，现在两张表产生关联了，可以尽情的调用了
//        用户表是对博客表是一对多的关系，现在要往博客表里写数据，所以
//        1.你操作的是博客表  2.你要写数据



//        所以现在你是以用户表的视角来进行操作的
//        所以现在的关系就是一对多的关系
//        获得已经登录的用户的所有资料
        $user  = Auth::user();
//        dd($user);
//        接下来，你要根据用户表往博客表里写数据
        $user->blog()->create($post);

        session()->flash("success","博客发表成功，恭喜恭喜");
        return redirect("/");

//        下一步：首页循环展示文章列表

    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function show(Blog $blog)
    {
//        加载文章展示模板
        return view("blog.show",compact("blog"));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function edit(Blog $blog)
    {
//        dd($blog->toArray());die;

        $this->authorize("update",$blog);
        return view("blog.edit",compact("blog"));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Blog $blog)
    {

//        echo 111;
//        确认修改
//        $blog其实就是那张blog数据表，这届修改那张表就行了
        $blog->content = $request->input("content");

//        然后保存
        $blog->save();

        session()->flash("success","恭喜修改成功");

        return redirect("/");

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Blog  $blog
     * @return \Illuminate\Http\Response
     */
    public function destroy(Blog $blog)
    {


        $this->authorize("delete",$blog);
//        echo 111;
        $blog->delete();

        session()->flash("success","恭喜删除成功");

//        back()方法：返回当前页
        return back();



    }
}
